#ifndef _BLOCKBREAKER_GAME_PLAYER_H__
#define _BLOCKBREAKER_GAME_PLAYER_H__

#include <Model/Include/Ball.h>
#include <Model/Include/Paddle.h>

#define INITIAL_BALLS_COUNT 3

/// \brief class used to model a player
class Player
{

public:
    Player(const int &player_id, Ball* player_ball, Paddle* player_paddle);
    virtual ~Player(void);

    Ball* getBall();
    Paddle* getPaddle();

    void moveRight();
    void stopMovingRight();
    void moveLeft();
    void stopMovingLeft();

    Ball* loseBall();
    void setNewBall(Ball* ball);
    void tookBlock();

    int getBallsAvailable();
    int getBlocksTaken();
    int getScore();

private:
    void updateMovement();   

    int id;
    Ball* ball;
    Paddle* paddle;
    int score;
    int balls_available;
    int blocks_taken_count;

    bool move_right;
    bool move_left;

    
};

#endif // _BLOCKBREAKER_GAME_PLAYER_H__